import { _decorator, Color, Component, Node, Sprite, tween } from 'cc';
const { ccclass, property } = _decorator;

@ccclass('CheckColor')
export class CheckColor extends Component {
    @property(Node)
    spriteNode: Node = null!; // 用于动画的精灵节点

    private sprite: Sprite = null!;  // 精灵组件
    private c0: Color = new Color();  // 当前颜色
    private c1: Color = new Color(255, 0, 0);  // 初始颜色（红色）
    private c2: Color = new Color(0, 0, 255);  // 目标颜色（蓝色）

    start() {
        // 获取精灵组件
        this.sprite = this.spriteNode.getComponent(Sprite)!;
        
        // 设置精灵的初始颜色为红色
        this.sprite.color = this.c1;
        
        // 调用颜色渐变的动画
        this.colorTween();
    }

    colorTween() {
        // 设置当前颜色为 c1
        this.c0.set(this.c1.r, this.c1.g, this.c1.b);

        // 使用tween库进行颜色渐变动画
        tween(this.c0)
            .to(0.5, { r: this.c2.r, g: this.c2.g, b: this.c2.b }, {  // 目标颜色为蓝色
                onUpdate: () => {
                    // 每一帧更新时，将当前颜色赋值给精灵
                    this.sprite.color = this.c0;
                }
            })
            .to(0.5, { r: this.c1.r, g: this.c1.g, b: this.c1.b }, {  // 目标颜色为红色
                onUpdate: () => {
                    // 每一帧更新时，将当前颜色赋值给精灵
                    this.sprite.color = this.c0;
                }
            })
            .union()
            .repeatForever()  // 无限循环
            .start();  // 启动动画
    }
}


